# -*- coding: utf-8 -*-
"""
Created on Sat Jul  6 02:41:17 2019
用来处理自己制作的数据集的坐标，
使用LabelImg软件制作出来的的标签，只有xmin,xmax,ymin,ymax四个坐标，
由于使用的text-detection-ctpn模型，要求原始数据是四个点，8个坐标，排列顺序为xmin,ymin,xmax,ymin,xmax,ymax,xmin,ymax;
这个文件主要是针对把对角坐标变成了txt文件的内容的情况，
使用这个文件可以把4个值变成8个值，
再使用text-detection-ctpn模型里的坐标处理文件后，就可以进行训练了。
@author: ikaros
"""
import re
import numpy as np
import os


def transfer4_8(file1):   
    first=[]    
    with open(file1, 'r') as f1:
        for line in f1:
            #line是字符串类型
            line=line.strip()          # 去除空格，只去除空格
            line2 = re.sub("\,"," ",line) #把逗号转化为空格   # 可以使用str.replace(",", " ") #实际上没必要转换，直接split(",")切片即可
            count_str = 0                 
            for a in line2: #统计字符串的字符个数
                if a!="":
                    count_str=count_str+1
            blank=[]
            for n_str in range(count_str):
                if line2[n_str] == " ":      #把空格的位置记录下来
                    blank.append(n_str)

            '''-----根据空格位置把对应坐标提取出来-----'''
            xmin = line2[0:blank[0]]
            ymin = line2[blank[0]+1 : blank[1]]
            xmax = line2[blank[1]+1 : blank[2]]
            ymax = line2[blank[2]+1 : count_str]
            '''-------------------------------------'''
            '''把4个坐标转换成8个坐标'''
            line3 = xmin + ',' + ymin + ','+ xmax + ',' + ymin + ','+ xmax + ','+ ymax + ','+ xmin + ','+ ymax
            #print(line3)
            first.append(line3)
    #print(first)
    return first

# 简化版
def transfer4_8_002(file1):
	first=[]    
    with open(file1, 'r') as f1:
        for line in f1:
			# line是字符串类型
			line = line.strip()  # 去除空格，只去除空格
			coor_list = line.split(',')
			xmin, ymin, xmax, ymax = coor_list[0], coor_list[1], coor_list[2], coor_list[3]

			left_up = xmin + ',' + ymin + ','      # 左上坐标
			right_up = xmax + ',' + ymin + ','     # 右上坐标
			right_down = xmax + ',' + ymax + ','   # 右下坐标
			left_down = xmin + ',' + ymax          # 左下坐标
			line3 = left_up + right_up + right_down + left_down
			
			first.append(line3)
	#print(first)
    return first
			


load_path = 'E:/mark/python文件操作/label'
save_path = 'E:/mark/python文件操作/label2'

filelist = os.listdir(load_path)
print(filelist)

for item in filelist:
    loadfile1 = load_path +'/'+item
    value = transfer4_8(loadfile1)
#    print(item,":")    
#    print(value)
#    print("\n")
    with open(os.path.join(save_path, item), 'w') as f1:
        for b in (value):
            f1.write(b)
            f1.write('\n')
        
























